<?php
/**
 * 框架 - 简单的[ActiveRecord]模式(多表进行连接)
 * 
 * @version $Id: ActiveRelation.php 353 2012-07-21 05:58:48Z linsir123 $
 * @package Mysql
 */
class ActiveRelation extends ActiveRecord 
{
	/**
	 * 数据表连接关系
	 */
	const LEFT_JOIN = 'LEFT JOIN';
	
	/**
	 * 数据表连接关系
	 */
	const RIGHT_JOIN = 'RIGHT JOIN';
	
	/**
	 * 数据表连接关系
	 */
	const INNER_JOIN = 'INNER JOIN';
	
	/**
	 * 左连接
	 * 
	 * @param ActiveRecord $ar 被连接的模型
	 * @param string $key 主键名
	 * @param string $fKey 外键名
	 * @return $this
	 */
	public function joinLeft($ar, $key, $fKey)
	{
		$this->_join(self::LEFT_JOIN, $ar, $key, $fKey);
		return $this;
	}
	
	/**
	 * 右连接
	 * 
	 * @param ActiveRecord $ar 被连接的模型
	 * @param string $key 主键名
	 * @param string $fKey 外键名
	 * @return $this
	 */
	public function joinRight($ar, $key, $fKey)
	{
		$this->_join(self::RIGHT_JOIN, $ar, $key, $fKey);
		return $this;
	}
	
	/**
	 * 内连接
	 * 
	 * @param ActiveRecord $ar 被连接的模型
	 * @param string $key 主键名
	 * @param string $fKey 外键名
	 * @return $this
	 */
	public function joinInner($ar, $key, $fKey)
	{
		$this->_join(self::INNER_JOIN, $ar, $key, $fKey);
		return $this;
	}
	
	/**
	 * 连接
	 */
	private function _join($type, $ar, $key, $fKey)
	{
		$this->oSelect->join($ar->oSelect, $type, $key, $fKey);
	}
}
